package com.yvon.maple.service.msg.core.model.dto;

import com.yvon.maple.pojo.BaseDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotEmpty;

/**
 * @author yvon
 * @since 2023-04-27
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class MessageTemplateDTO extends BaseDTO {


    /**
     * 模板标题
     */
    @ApiModelProperty(value = "模板标题")
    @NotEmpty(message = "模板标题不能为空")
    private String name;

    /**
     * 消息内容  ${var} 为占位符
     */
    @ApiModelProperty(value = "消息内容  ${var} 为占位符")
    @NotEmpty(message = "消息内容不能为空")
    private String msgContent;

    /**
     * 消息的发送ID类型
     * userId - 用户ID
     * phone - 手机号
     * openId - 微信OpenID
     * email - 电子邮件
     */
    @ApiModelProperty(value = "消息的发送ID类型 userId - 用户ID phone - 手机号 openId - 微信OpenID email - 电子邮件")
    @NotEmpty(message = "消息的发送ID类型不能为空")
    private String idType;

    /**
     * 消息发送渠道
     * im - 站内信
     * push - 通知栏
     * sms - 短信
     * email - 邮件
     * official_accounts - 服务号
     * mini_program - 小程序
     */
    @ApiModelProperty(value = "消息发送渠道 im - 站内信 push - 通知栏  sms - 短信 email - 邮件 official_accounts - 服务号 mini_program - 小程序")
    @NotEmpty(message = "消息发送渠道不能为空")
    private String channelType;

    /**
     * 模板类型
     * operation - 运营类的模板
     * technology - 技术类的模板
     */
    @ApiModelProperty(value = "模板类型 operation - 运营类的模板,  technology - 技术类的模板")
    @NotEmpty(message = "模板类型不能为空")
    private String templateType;

    /**
     * 消息类型
     * notice - 通知类消息
     * marketing - 营销类消息
     * auth_code - 验证码消息
     */
    @ApiModelProperty(value = "消息类型 notice - 通知类消息,  marketing - 营销类消息, auth_code - 验证码消息")
    @NotEmpty(message = "消息类型不能为空")
    private String messageType;


    /**
     * 当前消息审核状态： 10.待审核 20.审核成功 30.被拒绝
     */
    @ApiModelProperty(value = "当前消息审核状态： 10.待审核 20.审核成功 30.被拒绝")
    private Integer auditStatus;

    /**
     * 工单ID（审核模板走工单）
     */
    @ApiModelProperty(value = "工单ID（审核模板走工单）")
    private Long flowId;

    /**
     * 当前消息状态
     */
    @ApiModelProperty(value = "当前消息状态")
    private Integer msgStatus;

    /**
     * 推送消息的时间
     * 0：立即发送
     * else：crontab 表达式
     */
    @ApiModelProperty(value = "推送消息的时间 0：立即发送 else：crontab 表达式")
    private String expectPushTime;

    /**
     * 发送账号（邮件下可有多个发送账号、短信可有多个发送账号..）
     */
    @ApiModelProperty(value = "发送账号（邮件下可有多个发送账号、短信可有多个发送账号..）")
    private String sendAccount;

    /**
     * 审核者
     */
    private String auditor;

    /**
     * 业务方团队
     */
    private String team;

    /**
     * 业务方
     */
    private String proposer;

    /**
     * 状态
     * 1：启用
     * 0：禁用
     */
    @ApiModelProperty(value = "状态  1：启用, 0：禁用")
    private Integer status;

    /**
     * 消息去重时间 单位小时
     */
    @ApiModelProperty(value = "消息去重时间 单位小时")
    private Integer deduplicationTime;

    /**
     * 是否夜间屏蔽
     * 0:不屏蔽
     * 1：屏蔽
     */
    @ApiModelProperty(value = "是否夜间屏蔽 0:不屏蔽, 1：屏蔽")
    private Integer nightShield;

}
